package business;

import business.EmpregadoBO;
import business.EmpregadoException;
import java.text.ParseException;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

public class EmpregadoBOTestDataAdmissao {
    
    public EmpregadoBOTestDataAdmissao() {
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
    }

    @AfterClass
    public static void tearDownClass() throws Exception {
    }
    
    @Before
    public void setUp() {
    }
    
    @After
    public void tearDown() {
    }
    
    /**
     * Testes do método que verifica se a data de admissão é posterior à data de nascimento.
     * 
     * @author Zeno
     * 
     */
    
    @Test(expected = ParseException.class) 
    public void testVerificaDataAdmissaoComDataAdmissaoInvalida() throws EmpregadoException, Exception, ParseException {
        String dataAdmissao = "508317";
        String dataNascimento = "11/03/1997";
        dataAdmissaoInvalida(dataAdmissao, dataNascimento);
    }
    
    @Test(expected = ParseException.class) 
    public void testVerificaDataAdmissaoComDataNascimentoInvalida() throws EmpregadoException, Exception, ParseException {
        String dataAdmissao = "03/09/2008";
        String dataNascimento = "09582309";
        dataAdmissaoInvalida(dataAdmissao, dataNascimento);
    }
    
    @Test(expected = EmpregadoException.class) 
    public void testDataAdmissaoIgualDataNascimento() throws EmpregadoException, Exception, ParseException {
        String dataAdmissao = "20/08/2011";
        String dataNascimento = "20/08/2011";
        dataAdmissaoInvalida(dataAdmissao, dataNascimento);
    }
    
    @Test(expected = EmpregadoException.class) 
    public void testDataAdmissaoMenorDataNascimento() throws EmpregadoException, Exception, ParseException {
        String dataAdmissao = "10/01/2000";
        String dataNascimento = "13/02/2001";
        dataAdmissaoInvalida(dataAdmissao, dataNascimento);
    }
    
    @Test
    public void testDataAdmissaoMaiorDataNascimento() throws EmpregadoException, Exception, ParseException {
        String dataAdmissao = "31/09/2011";
        String dataNascimento = "28/02/1978";
        dataAdmissaoValida(dataAdmissao, dataNascimento);
    }
    
    private void dataAdmissaoValida(String dataAdmissao, String dataNascimento) throws EmpregadoException, Exception, ParseException {
        boolean valido = EmpregadoBO.getInstance().validaDataAdmissao(dataAdmissao, dataNascimento);
        assertEquals(true, valido);
    }
    
    private void dataAdmissaoInvalida(String dataAdmissao, String dataNascimento) throws EmpregadoException, ParseException {
        boolean invalido = EmpregadoBO.getInstance().validaDataAdmissao(dataAdmissao, dataNascimento);
    }
    
}
